CSS `eager` ๊ท์น์ ํ์ฉํ์ฌ ์น ์ฑ๋ฅ์ ๊ฐ์ ํ๊ณ , CLS(Cumulative Layout Shift)๋ฅผ ์ค์ด๋ฉฐ ์ฌ์ฉ์ ๊ฒฝํ์ ํฅ์์ํค๋ ๋ฐฉ๋ฒ์ ์์๋ณด์ธ์. ์ค์ฉ์ ์ธ ๊ตฌํ ์ ๋ต๊ณผ ๊ธ๋ก๋ฒ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ์ดํด๋ด ๋๋ค.
CSS Eager ๊ท์น: Eager ๋ก๋ฉ ๊ตฌํ์ผ๋ก ์น ์ฑ๋ฅ ์ต์ ํ
๋์์์ด ์งํํ๋ ์น ๊ฐ๋ฐ ํ๊ฒฝ์์ ์น ์ฑ๋ฅ ์ต์ ํ๋ ์ฌ์ ํ ์ค์ํ ์ฐ์ ์์์ ๋๋ค. ๋ก๋ฉ ์๋๊ฐ ๋๋ฆฐ ์น์ฌ์ดํธ๋ ์ฌ์ฉ์ ๋ถ๋ง์ ์ผ๊ธฐํ๊ณ ์ฐธ์ฌ๋๋ฅผ ๋ฎ์ถ๋ฉฐ ๊ถ๊ทน์ ์ผ๋ก ์ ํ์จ์ ์ ํ์ํฌ ์ ์์ต๋๋ค. ์ธ์ง๋ ์น์ฌ์ดํธ ์๋์ ์ค์ ์น์ฌ์ดํธ ์๋๋ฅผ ๊ฐ์ ํ๋ ๊ฐ๋ ฅํ ๊ธฐ์ ์ค ํ๋๋ eager ๋ก๋ฉ์ด๋ฉฐ, ํนํ CSS `eager` ๊ท์น์ ํ์ฉํ๋ ๊ฒ์ ๋๋ค. ์ด ํฌ๊ด์ ์ธ ๊ฐ์ด๋๋ `eager` ๊ท์น์ ๋ณต์ก์ฑ์ ์์ธํ ์ดํด๋ณด๊ณ ์ค์ฉ์ ์ธ ๊ตฌํ ์ ๋ต์ ์ ๊ณตํ๋ฉฐ ๊ธ๋ก๋ฒ ๋งฅ๋ฝ์์ ๊ทธ ์ด์ ์ ํ๊ตฌํฉ๋๋ค.
์น ์ฑ๋ฅ์ ์ค์์ฑ ์ดํด
`eager` ๊ท์น์ ์ธ๋ถ ์ฌํญ์ ์ดํด๋ณด๊ธฐ ์ ์ ์น ์ฑ๋ฅ์ ์ค์์ฑ์ ์ดํดํ๋ ๊ฒ์ด ํ์์ ์ ๋๋ค. ์ค๋๋ ๋น ๋ฅด๊ฒ ๋ณํํ๋ ๋์งํธ ์ธ๊ณ์์ ์ฌ์ฉ์๋ ์น์ฌ์ดํธ๊ฐ ๋น ๋ฅด๊ณ ์ํํ๊ฒ ๋ก๋๋๊ธฐ๋ฅผ ๊ธฐ๋ํฉ๋๋ค. ๋ก๋ฉ ์๋๊ฐ ๋๋ฆฐ ์น์ฌ์ดํธ๋ ์ฌ์ฉ์ ๊ฒฝํ์ ๋ถ์ ์ ์ธ ์ํฅ์ ๋ฏธ์น๊ณ ๋ค์๊ณผ ๊ฐ์ ์ฌ๋ฌ ๊ฐ์ง ํด๋ก์ด ๊ฒฐ๊ณผ๋ฅผ ์ด๋ํ ์ ์์ต๋๋ค:
- ๋์ ์ดํ๋ฅ : ์ฌ์ฉ์๋ ๋ก๋ํ๋ ๋ฐ ๋๋ฌด ์ค๋ ๊ฑธ๋ฆฌ๋ ์น์ฌ์ดํธ๋ฅผ ํฌ๊ธฐํ ๊ฐ๋ฅ์ฑ์ด ๋ ํฝ๋๋ค.
- ์ ํ์จ ๊ฐ์: ๋๋ฆฐ ์น์ฌ์ดํธ๋ ์ฌ์ฉ์๊ฐ ๊ตฌ๋งค ๋๋ ์์ ์ ์ถ๊ณผ ๊ฐ์ ์ํ๋ ์์ ์ ์๋ฃํ๋ ๊ฒ์ ๋ง์ ์ ์์ต๋๋ค.
- SEO์ ๋ํ ๋ถ์ ์ ์ธ ์ํฅ: Google๊ณผ ๊ฐ์ ๊ฒ์ ์์ง์ ์น์ฌ์ดํธ ์๋๋ฅผ ์์ ์์๋ก ๊ฐ์ฃผํฉ๋๋ค. ๋๋ฆฐ ์น์ฌ์ดํธ๋ ๊ฒ์ ๊ฒฐ๊ณผ์์ ๋ ๋ฎ์ ์์๋ฅผ ์ฐจ์งํ ์ ์์ต๋๋ค.
- ๋์ ์ฌ์ฉ์ ๊ฒฝํ: ๋ถ๋ง์ ํ์ ์ฌ์ฉ์๋ ์น์ฌ์ดํธ๋ก ๋์์ฌ ๊ฐ๋ฅ์ฑ์ด ์ ์ด ๋ธ๋๋ ํํ์ด ์์๋ฉ๋๋ค.
์น ์ฑ๋ฅ ์ต์ ํ์๋ ์ด๋ฏธ์ง ์ต์ ํ, ์ฝ๋ ์ถ์, ์บ์ฑ ๋ฐ ํจ์จ์ ์ธ ๋ฆฌ์์ค ๋ก๋ฉ์ ํฌํจํ ๋ค์ํ ์ธก๋ฉด์ด ํฌํจ๋ฉ๋๋ค. CSS `eager` ๊ท์น์ ํนํ CLS(Cumulative Layout Shift)๋ฅผ ํด๊ฒฐํ๊ณ ์ธ์ง๋ ์ฑ๋ฅ์ ๊ฐ์ ํ์ฌ CSS์ ๋ก๋ฉ ๋์์ ์ ์ดํ๋ ๋ฐ ์ ์ฉํ ๋๊ตฌ๋ฅผ ์ ๊ณตํฉ๋๋ค.
CSS `eager` ๊ท์น ์๊ฐ
CSS์ `eager` ๊ท์น์ ์ฌ์์ ๋น๊ต์ ์ต๊ทผ์ ์ถ๊ฐ๋ ๊ฒ์ผ๋ก, ๊ฐ๋ฐ์๊ฐ ๋ธ๋ผ์ฐ์ ์ ์คํ์ผ์ํธ๋ฅผ *์ฆ์* ๋ก๋ํ๋๋ก ์ง์ํ ์ ์์ต๋๋ค. ์ด๋ ํ์ด์ง์ ์ด๊ธฐ ๋ ๋๋ง์ ํ์์ ์ธ ์คํ์ผ์ด ํฌํจ๋ ์ค์ํ ์คํ์ผ์ํธ์ ํนํ ์ ์ฉํฉ๋๋ค. `link` ์์์ `eager`๋ฅผ ์ง์ ํ๋ฉด ๊ฐ๋ฐ์๋ ์ด๋ฌํ ์คํ์ผ์ํธ๊ฐ ๊ฐ๋ฅํ ํ ๋นจ๋ฆฌ ๋ค์ด๋ก๋๋๊ณ ๊ตฌ๋ฌธ ๋ถ์๋๋๋ก ํ ์ ์์ต๋๋ค. ์ด ์ ๊ทผ ๋ฐฉ์์ CLS๋ฅผ ์ค์ด๊ณ ๋ ์ด์์ ์ด๋์ ๋ฐฉ์งํ๋ฉฐ ๊ถ๊ทน์ ์ผ๋ก ๋ ๋ถ๋๋ฌ์ด ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
`eager` ๊ท์น ์ฌ์ฉ์ ์ฃผ์ ์ด์ :
- ๋์ ๋ ์ด์์ ์ด๋(CLS) ๊ฐ์: ์ค์ํ ์คํ์ผ์ ์ผ์ฐ ๋ก๋ํจ์ผ๋ก์จ ๋ธ๋ผ์ฐ์ ๋ ์ด๊ธฐ ํ์ด์ง ๋ ์ด์์์ ๋ณด๋ค ์ ํํ๊ฒ ๋ ๋๋งํ์ฌ ์ฝํ ์ธ ์ ์๊ธฐ์น ์์ ์ด๋์ ์ต์ํํ ์ ์์ต๋๋ค.
- ์ธ์ง๋ ์ฑ๋ฅ ํฅ์: ๋ ๋น ๋ฅธ ์ด๊ธฐ ๋ ๋๋ง์ ์น์ฌ์ดํธ ๋ก๋ฉ ์๋๊ฐ ๋ ๋น ๋ฅด๋ค๋ ์ธ์์ ์ฃผ์ด ์ฌ์ฉ์ ๋ง์กฑ๋๋ฅผ ๋์ ๋๋ค.
- ํฅ์๋ ์ฌ์ฉ์ ๊ฒฝํ: ๋ ๋ถ๋๋ฝ๊ณ ์์ ์ ์ธ ํ์ด์ง ๋ ์ด์์์ ์ฌ์ฉ์ ๋ถ๋ง์ ์ค์ด๊ณ ์ ๋ฐ์ ์ธ ์ฐธ์ฌ๋๋ฅผ ํฅ์์ํต๋๋ค.
- ์ ์ฌ์ ์ธ SEO ์ด์ : ์ง์ ์ ์ธ ์์ ์์๋ ์๋์ง๋ง ์ฑ๋ฅ ํฅ์์ ๊ฐ์ ์ ์ผ๋ก ๋ ๋์ ๊ฒ์ ์์ง ์์์ ๊ธฐ์ฌํ ์ ์์ต๋๋ค.
`eager` ๊ท์น ๊ตฌํ
`eager` ๊ท์น์ ๊ตฌํํ๋ ๊ฒ์ ๊ฐ๋จํฉ๋๋ค. ์ฃผ๋ก HTML์ `<link>` ํ๊ทธ์์ `rel="preload"` ์์ฑ์ `as="style"` ์์ฑ๊ณผ ํจ๊ป ์ฌ์ฉํ๊ณ ์ `fetchpriority` ์์ฑ์ `high`๋ก ์ค์ ํ๋ ๊ฒ๊ณผ ๊ด๋ จ๋ฉ๋๋ค.
<link rel="preload" href="styles.css" as="style" fetchpriority="high">
์ด ์์์:
- `rel="preload"`: ๋ธ๋ผ์ฐ์ ์ ์ง์ ๋ ๋ฆฌ์์ค๋ฅผ ๋ฏธ๋ฆฌ ๋ก๋ํ๋๋ก ์ง์ํฉ๋๋ค.
- `href="styles.css"`: CSS ์คํ์ผ์ํธ์ ๊ฒฝ๋ก๋ฅผ ์ง์ ํฉ๋๋ค.
- `as="style"`: ๋ฏธ๋ฆฌ ๋ก๋๋ ๋ฆฌ์์ค๊ฐ ์คํ์ผ์ํธ์์ ๋ํ๋ ๋๋ค.
- `fetchpriority="high"`: ์ด๊ฒ์ ์ค์ํ ์ถ๊ฐ ์ฌํญ์ ๋๋ค. ์ด ๋ฆฌ์์ค๊ฐ ์ฐ์ ์์๊ฐ ๋๊ณ ๊ฐ๋ฅํ ํ ๋นจ๋ฆฌ ๊ฐ์ ธ์์ผ ํจ์ ๋ธ๋ผ์ฐ์ ์ ์๋ฆฝ๋๋ค. ์ด๊ฒ์ "eager" ๋์์ ํจ๊ณผ์ ์ผ๋ก ๊ตฌํํฉ๋๋ค.
์ค์ ๊ณ ๋ ค ์ฌํญ:
- ๊ตฌ์ฒด์ฑ: ํ์ด์ง์ ์ด๊ธฐ ๋ ๋๋ง์ *์ค์ํ* ์คํ์ผ์ํธ์๋ง `eager`๋ฅผ ์ ์ฉํ์ญ์์ค. ๊ณผ๋ํ๊ฒ ์ฌ์ฉํ๋ฉด ํ์ํ ๋ค๋ฅธ ๋ฆฌ์์ค ๋์ ํน์ ๋ฆฌ์์ค์ ์ฐ์ ์์๋ฅผ ์ง์ ํ๋๋ก ๋ธ๋ผ์ฐ์ ๋ฅผ ๊ฐ์ ํ๋ฏ๋ก ์ฑ๋ฅ์ ๋ถ์ ์ ์ธ ์ํฅ์ ๋ฏธ์น ์ ์์ต๋๋ค.
- ํ ์คํธ: `eager` ๊ท์น์ ๊ตฌํํ ํ ์น์ฌ์ดํธ๊ฐ ์ํ๋ ํจ๊ณผ๋ฅผ ๋ด๋์ง ํ์ธํ๊ธฐ ์ํด ์ฒ ์ ํ ํ ์คํธํ์ญ์์ค. CLS, FCP(First Contentful Paint) ๋ฐ LCP(Largest Contentful Paint)์ ๊ฐ์ ๋ฉํธ๋ฆญ์ ๋ชจ๋ํฐ๋งํ์ฌ ์ฑ๋ฅ ๊ฐ์ ์ ํ๊ฐํฉ๋๋ค. Google์ PageSpeed Insights ๋๋ WebPageTest.org์ ๊ฐ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ๋ ฅํ ๋ถ์์ ์ํํ์ญ์์ค.
- ๋ธ๋ผ์ฐ์ ์ง์: ๋ชจ๋ ๋์ ๋ธ๋ผ์ฐ์ ์์ ํ ์คํธํด์ผ ํฉ๋๋ค. ์ฑํ์ด ๋น ๋ฅด๊ฒ ์ฆ๊ฐํ๊ณ ์์ง๋ง ์ฌ์ฉ์๊ฐ ์ฌ์ฉํ๋ ๋ชจ๋ ๋ธ๋ผ์ฐ์ ์์ ๊ตฌํ์ด ํจ๊ณผ์ ์ผ๋ก ์๋ํ๋์ง ํ์ธํ์ญ์์ค.
- ๋ชจ๋ ๊ฒ์ ์ ๊ทน์ ์ผ๋ก ๋ก๋ํ์ง ๋ง์ญ์์ค: ์ค์ํ CSS๋ง `eager`๋ก ํ์ํ์ญ์์ค. *๋ชจ๋ ๊ฒ*์ ์ ๊ทน์ ์ผ๋ก ๋ก๋ํ๋ฉด ์ํ๋ ๊ฒฐ๊ณผ์ ๋ฐ๋๋๋ ๊ฒฐ๊ณผ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. ์ฆ, ๋ก๋ฉ ์๊ฐ์ด ๋์ด๋ฉ๋๋ค.
๊ธ๋ก๋ฒ ์น ์ฑ๋ฅ์ ์ํ ๋ชจ๋ฒ ์ฌ๋ก
`eager` ๊ท์น ์ธ์๋ ์ฌ๋ฌ ๋ค๋ฅธ ์ ๋ต์ด ์ ์ธ๊ณ์ ์ผ๋ก ์น ์ฑ๋ฅ์ ํฅ์์ํค๋ ๋ฐ ๊ธฐ์ฌํฉ๋๋ค. ์ด๋ฌํ ๋ชจ๋ฒ ์ฌ๋ก๋ ๋ค์ํ ์ง์ญ, ๋ค์ํ ์ธํฐ๋ท ์๋ ๋ฐ ๋ค์ํ ์ฅ์น์ ์ฌ์ฉ์๋ฅผ ์ํด ๊ธ์ ์ ์ธ ์ฌ์ฉ์ ๊ฒฝํ์ ๋ณด์ฅํ๋ ๋ฐ ์ค์ํฉ๋๋ค.
- ์ด๋ฏธ์ง ์ต์ ํ: ์น ์ ์ก์ ๋ง๊ฒ ์ด๋ฏธ์ง๋ฅผ ์ต์ ํํฉ๋๋ค. ์ ์ ํ ํ์(์: WebP, AVIF)์ ์ฌ์ฉํ๊ณ ํ์ง์ ์ ํ์ํค์ง ์๊ณ ์ด๋ฏธ์ง๋ฅผ ์์ถํฉ๋๋ค. ์ด๊ธฐ ๋ก๋ ์๊ฐ์ ๊ฐ์ ํ๊ธฐ ์ํด ํด๋ ์๋ ์ด๋ฏธ์ง๋ฅผ ์ง์ฐ ๋ก๋ํ๋ ๊ฒ์ ๊ณ ๋ คํ์ญ์์ค. TinyPNG, ImageOptim ๋ฐ Cloudinary์ ๊ฐ์ ๋๊ตฌ๋ ์ด๋ฏธ์ง ์ต์ ํ๋ฅผ ์ง์ํ ์ ์์ต๋๋ค.
- ์ฝ๋ ์ถ์ ๋ฐ ์์ถ: ํ์ผ ํฌ๊ธฐ๋ฅผ ์ค์ด๊ธฐ ์ํด CSS, JavaScript ๋ฐ HTML ํ์ผ์ ์ต์ํํฉ๋๋ค. gzip ๋๋ Brotli ์์ถ์ ์ฌ์ฉํ์ฌ ์ ์ก ์๊ฐ์ ๋์ฑ ์ค์ ๋๋ค.
- ์บ์ฑ: ์ ์ ์์ฐ์ ์ ์ฅํ๊ณ ์๋ฒ ๋ถํ๋ฅผ ์ค์ด๊ธฐ ์ํด ์บ์ฑ ๋ฉ์ปค๋์ฆ(์: ๋ธ๋ผ์ฐ์ ์บ์ฑ, ์๋ฒ ์ธก ์บ์ฑ)์ ๊ตฌํํฉ๋๋ค. ์ ์ ํ `Cache-Control` ํค๋๋ฅผ ๊ตฌ์ฑํฉ๋๋ค.
- ์ฝํ ์ธ ์ ์ก ๋คํธ์ํฌ(CDN): CDN์ ํ์ฉํ์ฌ ์น์ฌ์ดํธ ์ฝํ ์ธ ๋ฅผ ์ง๋ฆฌ์ ์ผ๋ก ์ฌ๋ฌ ์๋ฒ์ ๋ฐฐํฌํ์ฌ ์ฌ์ฉ์๊ฐ ์์ ์ ์์น์ ๊ฐ์ฅ ๊ฐ๊น์ด ์๋ฒ์์ ์ฝํ ์ธ ์ ์ก์ธ์คํ ์ ์๋๋ก ํฉ๋๋ค. ์ธ๊ธฐ ์๋ CDN์๋ Cloudflare, Amazon CloudFront ๋ฐ Akamai๊ฐ ์์ต๋๋ค.
- HTTP ์์ฒญ ์ ์ค์ด๊ธฐ: ํ์ผ ๊ฒฐํฉ, CSS ์คํ๋ผ์ดํธ ์ฌ์ฉ ๋ฐ ์ค์ํ CSS ์ธ๋ผ์ธ์ ํตํด HTTP ์์ฒญ ์๋ฅผ ์ต์ํํฉ๋๋ค.
- JavaScript ์คํ ์ต์ ํ: JavaScript ํ์ผ์ ๋ ๋๋ง์ ์ฐจ๋จํ์ง ์๋๋ก JavaScript ํ์ผ์ ์ฐ๊ธฐํ๊ฑฐ๋ ๋น๋๊ธฐ์์ผ๋ก ๋ก๋ํฉ๋๋ค. ์ฝ๋ ๋ถํ ์ ์ฌ์ฉํ์ฌ ํน์ ํ์ด์ง์ ํ์ํ JavaScript๋ง ๋ก๋ํฉ๋๋ค.
- ์ฑ๋ฅ ๋ชจ๋ํฐ๋ง ๋ฐ ๋ถ์: Google PageSpeed Insights, WebPageTest ๋ฐ Google Analytics์ ๊ฐ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ์น์ฌ์ดํธ ์ฑ๋ฅ์ ์ ๊ธฐ์ ์ผ๋ก ๋ชจ๋ํฐ๋งํ๊ณ ๋ถ์ํฉ๋๋ค. ์ด๋ฅผ ํตํด ์ฑ๋ฅ ๋ณ๋ชฉ ํ์์ ์ฌ์ ์ ์๋ณํ๊ณ ํด๊ฒฐํ ์ ์์ต๋๋ค.
- ๋ชจ๋ฐ์ผ ์ต์ ํ: ์น์ฌ์ดํธ๊ฐ ๋ฐ์ํ์ด๊ณ ๋ชจ๋ฐ์ผ ์ฅ์น์ ์ต์ ํ๋์ด ์๋์ง ํ์ธํฉ๋๋ค. ๋ชจ๋ฐ์ผ ์ฐ์ ๋์์ธ ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํ๋ ๊ฒ์ ๊ณ ๋ คํ์ญ์์ค. ๋ค์ํ ๋ชจ๋ฐ์ผ ์ฅ์น ๋ฐ ๋คํธ์ํฌ ์กฐ๊ฑด์์ ์น์ฌ์ดํธ๋ฅผ ํ ์คํธํฉ๋๋ค.
- ๊ตญ์ ํ ๋ฐ ํ์งํ(I18n & L10n): ์น์ฌ์ดํธ๊ฐ ๊ธ๋ก๋ฒ ๋์์ ๋์์ผ๋ก ํ๋ ๊ฒฝ์ฐ ๊ตญ์ ํ ๋ฐ ํ์งํ ๋ฐฉ๋ฒ์ ๊ตฌํํ๋ ๊ฒ์ ๊ณ ๋ คํ์ญ์์ค. ์ด๋ฌํ ๋ฐฉ๋ฒ์ ์ธ์ด ๊ธฐ๋ณธ ์ค์ , ์ง์ญ ํ์(์: ๋ ์ง, ์๊ฐ, ํตํ) ๋ฐ ๋ฌธํ์ ๋์์ค์ ์ ์ํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. i18next, Babel ๋ฐ ICU ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ฐ์ ๋๊ตฌ๋ I18n ๋ฐ L10n ํ๋ก์ธ์ค๋ฅผ ์ฉ์ดํ๊ฒ ํ ์ ์์ต๋๋ค.
- ์ ๊ทผ์ฑ: ์น์ฌ์ดํธ๊ฐ ์ฅ์ ๊ฐ ์๋ ์ฌ์ฉ์๊ฐ ์ก์ธ์คํ ์ ์๋์ง ํ์ธํฉ๋๋ค. ์ฌ๊ธฐ์๋ ์ด๋ฏธ์ง์ ๋ํ ๋์ฒด ํ ์คํธ ์ ๊ณต, ์๋ฏธ๋ก ์ HTML ์ฌ์ฉ ๋ฐ ์ถฉ๋ถํ ์์ ๋๋น ๋ณด์ฅ์ด ํฌํจ๋ฉ๋๋ค. WCAG ์ง์นจ์ ๋ฐ๋ฅด๋ฉด ํฐ ๋์์ด ๋ฉ๋๋ค.
์ฌ๋ก ์ฐ๊ตฌ ๋ฐ ๊ธ๋ก๋ฒ ์์
`eager` ๊ท์น์ ์ ์ฉํ ์ ์๋ ๋ฐฉ๋ฒ๊ณผ ์์ฑํ ์ ์๋ ์ฑ๋ฅ ์ด์ ์ ๋ํ ๋ช ๊ฐ์ง ์ค์ ์์ ๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
์์ 1: ์ ์ ์๊ฑฐ๋ ์น์ฌ์ดํธ
ํนํ ์ ์ธ๊ณ์ ์ผ๋ก ํ๋งคํ๋ ์ ์ ์๊ฑฐ๋ ์น์ฌ์ดํธ๋ ์ค์ํ CSS์ `eager` ๊ท์น์ ์ฌ์ฉํ๋ฉด ์๋นํ ์ด์ ์ ์ป์ ์ ์์ต๋๋ค. ์ฌ๊ธฐ์๋ ๋จธ๋ฆฌ๊ธ, ํ์, ์ ํ ๋ชฉ๋ก ๋ฐ ํด๋ฆญ ์ ๋ ๋ฌธ์ ๋ฒํผ์ ๋ํ ์คํ์ผ์ด ํฌํจ๋ฉ๋๋ค. ์ด CSS๋ฅผ ๋ฏธ๋ฆฌ ๋ก๋ํ๊ณ ์ฆ์ ๊ตฌ๋ฌธ ๋ถ์ํจ์ผ๋ก์จ ์น์ฌ์ดํธ๋ ์๋๊ฐ ๋๋ฆฐ ์ธํฐ๋ท ์ฐ๊ฒฐ์ด๋ ์ฑ๋ฅ์ด ๋ฎ์ ์ฅ์น๋ฅผ ์ฌ์ฉํ๋ ์ฌ์ฉ์์๊ฒ๋ ํ์ด์ง์ ํต์ฌ ์์๋ฅผ ๊ฐ๋ฅํ ํ ๋นจ๋ฆฌ ํ์ํ๊ณ ์ํธ ์์ฉํ ์ ์๋๋ก ํ ์ ์์ต๋๋ค. ์ฌ์ฉ์๊ฐ ํ์ด์ง ๋ก๋ ์๋๊ฐ ๋น ๋ฅด๋ฉด ์ฅ๋ฐ๊ตฌ๋๋ฅผ ํฌ๊ธฐํ ๊ฐ๋ฅ์ฑ์ด ์ค์ด๋ค๊ธฐ ๋๋ฌธ์ ๊ธ์ ์ ์ธ ์ผํ ๊ฒฝํ์ ๋งค์ฐ ์ค์ํฉ๋๋ค.
์์ 2: ๋ด์ค ์น์ฌ์ดํธ
๊ธ๋ก๋ฒ ๋ด์ค ์น์ฌ์ดํธ๋ ์ธํฐ๋ท ์ธํ๋ผ๊ฐ ๋ค์ํ ์ง์ญ์ ์ฌ์ฉ์์๊ฒ๋ ํค๋๋ผ์ธ, ๊ธฐ์ฌ ์ค๋ํซ ๋ฐ ์ฃผ์ ํ์ ์์๊ฐ ๋น ๋ฅด๊ฒ ํ์๋๋๋ก ํด์ผ ํฉ๋๋ค. ์ด๋ฌํ ์์๋ฅผ ์ ์ดํ๋ ์คํ์ผ์ `eager` ๊ท์น์ ์ ์ฉํ๋ฉด ์น์ฌ์ดํธ๋ ์ค์ํ ์ฝํ ์ธ ์ ์ด๊ธฐ ๋ ๋๋ง ์ฐ์ ์์๋ฅผ ์ง์ ํ์ฌ ํนํ ์ธํฐ๋ท ์ฐ๊ฒฐ ์๋๊ฐ ๋๋ฆฐ ์ง์ญ์์ ์ฐธ์ฌ๋๋ฅผ ๋์ด๊ณ ์ดํ๋ฅ ์ ์ค์ผ ์ ์์ต๋๋ค. ์น์ฌ์ดํธ๋ ๋ด์ค ๊ธฐ์ฌ ๋ ์ด์์์ ์ ์ํ๋ ๊ฒ๊ณผ ๊ฐ์ ํต์ฌ CSS ํ์ผ์ `fetchpriority="high"`๋ฅผ ์ ์ฉํฉ๋๋ค.
์์ 3: ๋ค๊ตญ์ด ๋ธ๋ก๊ทธ
์ฌ๋ฌ ์ธ์ด๋ก ์ฝํ ์ธ ๋ฅผ ์ ๊ณตํ๋ ๋ธ๋ก๊ทธ๋ `eager`๋ฅผ ์ฌ์ฉํ์ฌ ์ด์ ์ ์ป์ต๋๋ค. ๊ฐ ์ธ์ด ์ฝํ ์ธ ์ ๋ ์ด์์๊ณผ ๊ธฐ๋ณธ ๊ตฌ์กฐ์ ํ์ํ ์ค์ํ CSS๋ `eager`๋ก ๋ก๋ํด์ผ ํฉ๋๋ค. ์ฝํ ์ธ ์์ฒด๋ ๋ค๋ฅด์ง๋ง ๊ธฐ๋ณธ ๊ตฌ์กฐ๋ ๋น ๋ฅด๊ฒ ์ฌ์ฉํ ์ ์์ด์ผ ํฉ๋๋ค. ํ๋์ค์ด, ๋ ์ผ์ด ๋ฐ ์คํ์ธ์ด๋ก ์ฝํ ์ธ ๋ฅผ ์ ๊ณตํ๋ ์น์ฌ์ดํธ๋ ๊ฐ ์ธ์ด ๋ฒ์ ์ ํต์ฌ ๋ ์ด์์ CSS์ `eager`๋ฅผ ๊ตฌํํฉ๋๋ค. ์ด๋ฅผ ํตํด ์ฌ์ฉ์๊ฐ ์ ํํ ์ธ์ด์ ๊ด๊ณ์์ด ์ผ๊ด๋๊ณ ๋น ๋ฅธ ๋ก๋ฉ ๊ฒฝํ์ ๋ณด์ฅํฉ๋๋ค. ํ์์ ๋ฐ๋ผ ์คํ์ผ์ ์กฐ์ ํ๊ธฐ ์ํด ๊ฐ ์ธ์ด์ ๋ํด ์๋ก ๋ค๋ฅธ ์คํ์ผ์ํธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ๋ ๊ณ ๋ คํ์ญ์์ค. ์ด ๋ชจ๋ ๊ฒ์ ์ํํ๋ฉด์ ๊ด๋ จ CSS์ `eager` ๊ท์น์ ์ฌ์ฉํ์ญ์์ค.
์น ์ฑ๋ฅ ํ ์คํธ ๋ฐ ๋ชจ๋ํฐ๋ง
`eager` ๊ท์น์ ๊ตฌํํ๋ ๊ฒ์ ์ฒซ ๋ฒ์งธ ๋จ๊ณ์ผ ๋ฟ์ ๋๋ค. ํจ๊ณผ๋ฅผ ๋ณด์ฅํ๊ณ ์ ์ฌ์ ์ธ ์ฑ๋ฅ ๋ฌธ์ ๋ฅผ ์๋ณํ๋ ค๋ฉด ์ง์์ ์ธ ๋ชจ๋ํฐ๋ง๊ณผ ํ ์คํธ๊ฐ ์ค์ํฉ๋๋ค. ์น ์ฑ๋ฅ์ ๋ชจ๋ํฐ๋งํ๊ณ ๋ถ์ํ๊ธฐ ์ํ ๋ช ๊ฐ์ง ์ฃผ์ ๋๊ตฌ ๋ฐ ๊ธฐ์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- Google PageSpeed Insights: ์น ํ์ด์ง์ ์ฑ๋ฅ์ ๋ถ์ํ๊ณ ๊ฐ์ ์ ์ํ ๊ถ์ฅ ์ฌํญ์ ์ ๊ณตํ๋ ๋ฌด๋ฃ๋ก ๊ฐ๋ ฅํ ๋๊ตฌ์ ๋๋ค. ๋ชจ๋ฐ์ผ ๋ฐ ๋ฐ์คํฌํฑ ์ฑ๋ฅ์ ๋ชจ๋ ํ๊ฐํ๊ณ CLS, FCP ๋ฐ LCP๋ฅผ ํฌํจํ ๋ค์ํ ์ฑ๋ฅ ๋ฉํธ๋ฆญ์ ๋ํ ์์ธํ ํต์ฐฐ๋ ฅ์ ์ ๊ณตํฉ๋๋ค.
- WebPageTest.org: ์์ธํ ์ฑ๋ฅ ํ ์คํธ ๋ฐ ๋ถ์์ ํ์ฉํ๋ ๋ณด๋ค ๊ณ ๊ธ ๋๊ตฌ์ ๋๋ค. ํ๋ฆ ์คํธ๋ฆฝ, ์ํฐํด ์ฐจํธ ๋ฐ ์ฑ๋ฅ ๋ณด๊ณ ์๋ฅผ ํฌํจํ ํ๋ถํ ์ ๋ณด๋ฅผ ์ ๊ณตํฉ๋๋ค. ๋ค์ํ ๋คํธ์ํฌ ์กฐ๊ฑด์ ์๋ฎฌ๋ ์ด์ ํ๊ณ ๋ค๋ฅธ ์ง๋ฆฌ์ ์์น์์ ํ ์คํธํ ์ ์์ต๋๋ค.
- Lighthouse: ์น ํ์ด์ง์ ํ์ง์ ๊ฐ์ ํ๊ธฐ ์ํ ์คํ ์์ค ์๋ํ ๋๊ตฌ์ ๋๋ค. Chrome ๊ฐ๋ฐ์ ๋๊ตฌ์ ์ผ๋ถ์ด๋ฉฐ ์ฑ๋ฅ, ์ ๊ทผ์ฑ, ํ๋ก๊ทธ๋ ์๋ธ ์น ์ฑ, SEO ๋ฑ์ ๋ํ ๊ฐ์ฌ๋ฅผ ์ ๊ณตํฉ๋๋ค. Lighthouse ๋ณด๊ณ ์๋ฅผ ์ฌ์ฉํ์ฌ ์ฑ๋ฅ ๋ณ๋ชฉ ํ์์ ์๋ณํ ์ ์์ต๋๋ค.
- ๋ธ๋ผ์ฐ์ ๊ฐ๋ฐ์ ๋๊ตฌ: ๋ธ๋ผ์ฐ์ ๊ฐ๋ฐ์ ๋๊ตฌ์ ๋คํธ์ํฌ ํญ์ ์ฌ์ฉํ์ฌ ๋คํธ์ํฌ ์์ฒญ์ ๋ถ์ํ๊ณ ๋ก๋ฉ ์๋๊ฐ ๋๋ฆฐ ๋ฆฌ์์ค๋ฅผ ์๋ณํฉ๋๋ค. ๋ ๋๋ง ์ฑ๋ฅ์ ๊ฒ์ฌํ๊ณ ํ์ธํธ ์๊ฐ์ ๋ถ์ํ ์๋ ์์ต๋๋ค.
- ์ค์ ์ฌ์ฉ์ ๋ชจ๋ํฐ๋ง(RUM): RUM ๋๊ตฌ๋ฅผ ๊ตฌํํ์ฌ ์ค์ ์ฌ์ฉ์๋ก๋ถํฐ ์ฑ๋ฅ ๋ฐ์ดํฐ๋ฅผ ์์งํฉ๋๋ค. ์ด๋ ์ฌ์ฉ์๊ฐ ์ค์ ๋ก ์น์ฌ์ดํธ๋ฅผ ๊ฒฝํํ๋ ๋ฐฉ๋ฒ์ ๋ํ ๊ท์คํ ํต์ฐฐ๋ ฅ์ ์ ๊ณตํฉ๋๋ค. Google Analytics(ํฅ์๋ ์ธก์ ๊ธฐ๋ฅ ์ฌ์ฉ), New Relic ๋ฐ Dynatrace์ ๊ฐ์ ๋๊ตฌ๋ RUM ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
- Core Web Vitals ๋ชจ๋ํฐ๋ง: ์ฌ์ฉ์ ๊ฒฝํ์ ์ธก์ ํ๋ ์ฃผ์ ๋ฉํธ๋ฆญ์ธ Core Web Vitals๋ฅผ ์ถ์ ํ๊ณ ๊ฐ์ ํ๋ ๋ฐ ์ค์ ์ ๋ก๋๋ค. ์ฌ๊ธฐ์๋ LCP, FID(First Input Delay) ๋ฐ CLS๊ฐ ํฌํจ๋ฉ๋๋ค.
์ฑ๋ฅ ๋ฉํธ๋ฆญ์ ์ ๊ธฐ์ ์ผ๋ก ๊ฒํ ํ๊ณ ์์ ์ธ๊ธ๋ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ์ ํ ์์ญ์ ์๋ณํ๊ณ ์น์ฌ์ดํธ๊ฐ ๋น ๋ฅด๊ณ ๋งค๋ ฅ์ ์ธ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํ๋์ง ํ์ธํ ์ ์์ต๋๋ค. Core Web Vitals๊ฐ ์ ํ๋์ด ํ๊ท๋ฅผ ๊ฐ์งํ๊ณ ์ฆ์ ๋์ํ ๋ ์๋ฆผ์ ์ค์ ํฉ๋๋ค.
๊ฒฐ๋ก : ๋ ๋น ๋ฅธ ์น์ ์ํด `eager` ๊ท์น์ ์์ฉ
CSS `eager` ๊ท์น์ ๋ค๋ฅธ ์น ์ฑ๋ฅ ๋ชจ๋ฒ ์ฌ๋ก์ ๊ฒฐํฉ๋์ด ์น์ฌ์ดํธ ๋ก๋ฉ ์๋๋ฅผ ์ต์ ํํ๊ณ ์ฌ์ฉ์ ๊ฒฝํ์ ๊ฐ์ ํ๋ ๊ฐ๋ ฅํ ์ ๊ทผ ๋ฐฉ์์ ์ ๊ณตํฉ๋๋ค. ๊ฐ๋ฐ์๋ ์ค์ํ CSS์ ๋ก๋ฉ ์ฐ์ ์์๋ฅผ ์ง์ ํจ์ผ๋ก์จ CLS๋ฅผ ์ค์ด๊ณ , ์ธ์ง๋ ์ฑ๋ฅ์ ํฅ์์ํค๋ฉฐ, ๊ธ๋ก๋ฒ ๋์์ ์ํด ๋ ๋ถ๋๋ฝ๊ณ ๋งค๋ ฅ์ ์ธ ์จ๋ผ์ธ ๊ฒฝํ์ ๋ง๋ค ์ ์์ต๋๋ค. `eager` ๊ท์น์ ํผ์ฆ์ ํ ์กฐ๊ฐ์ผ ๋ฟ์ด๋ผ๋ ๊ฒ์ ๊ธฐ์ตํ์ญ์์ค. ์ด๋ฏธ์ง ์ต์ ํ, ์ฝ๋ ์ถ์, ์บ์ฑ ๋ฐ CDN์ ํฌํจํ๋ ์น ์ฑ๋ฅ ์ต์ ํ์ ๋ํ ์ ์ฒด์ ์ธ ์ ๊ทผ ๋ฐฉ์์ ์ฑํํ์ญ์์ค. ์ด๋ฌํ ์์น์ ์์ฉํจ์ผ๋ก์จ ์ฌ์ฉ์๊ฐ ์ด๋์ ์๋ ๋๋ ์ด๋ค ์ฅ์น๋ฅผ ์ฌ์ฉํ๋ ์๊ด์์ด ๋ณด๊ธฐ์๋ ์ข์ง๋ง ์ฑ๋ฅ๋ ๋ฐ์ด๋ ์น์ฌ์ดํธ๋ฅผ ๊ตฌ์ถํ ์ ์์ต๋๋ค. ์ต์ ์ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ฅํ๊ณ ์งํํ๋ ์น ๊ฐ๋ฐ ํ๊ฒฝ์ ์ ์ํ๊ธฐ ์ํด ์น์ฌ์ดํธ์ ์ฑ๋ฅ์ ์ง์์ ์ผ๋ก ๋ชจ๋ํฐ๋งํ๊ณ ํ ์คํธํ์ญ์์ค.
์์ฝํ์๋ฉด, `eager` ๊ท์น์ ์ต์ ์น ๊ฐ๋ฐ์ ์ํ ๊ท์คํ ๋๊ตฌ์ด๋ฉฐ, ๋ ๋น ๋ฅด๊ณ ์ฑ๋ฅ์ด ๋ฐ์ด๋ ์น์ฌ์ดํธ๋ก ๊ฐ๋ ์ง์ ์ ์ธ ๊ฒฝ๋ก๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ด๋ฅผ ์์ฉํ๊ณ ํ ์คํธํ๊ณ ๋ค๋ฅธ ์ฑ๋ฅ ์ต์ ํ ๊ธฐ์ ๊ณผ ๊ฒฐํฉํ์ฌ ๊ธ๋ก๋ฒ ์ฌ์ฉ์์๊ฒ ์ฐ์ํ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํ์ญ์์ค.
์์ฃผ ๋ฌป๋ ์ง๋ฌธ(FAQ)
Q: ๋์ ๋ ์ด์์ ์ด๋(CLS)์ด๋ ๋ฌด์์
๋๊น?
A: CLS๋ ํ์ด์ง ๋ก๋ ์ค์ ์๊ฐ์ ์์๊ฐ ์๊ธฐ์น ์๊ฒ ์ด๋ํ๋ ๊ฒ์ ์ธก์ ํฉ๋๋ค. CLS ์ ์๊ฐ ๋ฎ์์๋ก ๋ ์์ ์ ์ด๊ณ ์ฌ์ฉ์ ์นํ์ ์ธ ๊ฒฝํ์ ๋ํ๋ด๋ฏ๋ก ๋ฐ๋์งํฉ๋๋ค.
Q: `eager` ๊ท์น์ JavaScript์ `async` ๋ฐ `defer` ์์ฑ๊ณผ ์ด๋ป๊ฒ ๋ค๋ฆ
๋๊น?
A: `async` ๋ฐ `defer` ์์ฑ์ JavaScript ํ์ผ์ ๋ก๋ฉ ๋ฐ ์คํ์ ์ ์ดํฉ๋๋ค. `fetchpriority="high"`๋ฅผ ์ฌ์ฉํ๋ `eager` ๊ท์น์ ํ์ด์ง์ ์ด๊ธฐ ๋ ์ด์์ ๋ ๋๋ง์ ์ํฅ์ ๋ฏธ์น๋ CSS ์คํ์ผ์ํธ์ ์ฆ๊ฐ์ ์ธ ๋ก๋ฉ์ ์ค์ ์ ๋ก๋๋ค.
Q: ๋ชจ๋ CSS ํ์ผ์ `eager` ๊ท์น์ ์ฌ์ฉํด์ผ ํฉ๋๊น?
A: ์๋์. ํ์ด์ง์ ์ด๊ธฐ ๋ ๋๋ง์ ์ค์ํ CSS ํ์ผ์๋ง `eager` ๊ท์น์ ์ ์ฉํ์ญ์์ค. ๊ณผ๋ํ๊ฒ ์ฌ์ฉํ๋ฉด ๋ชจ๋ CSS ํ์ผ์ ๋์ผํ ์ฐ์ ์์๋ฅผ ๋ถ์ฌํ์ฌ ๋ค๋ฅธ ์ค์ํ ๋ฆฌ์์ค์ ๋ก๋ฉ์ ๋ฐฉํดํ ์ ์์ผ๋ฏ๋ก ์ ์ฒด ์ฑ๋ฅ์ ๋ถ์ ์ ์ธ ์ํฅ์ ๋ฏธ์น ์ ์์ต๋๋ค. ํญ์ ๋ค๋ฅธ CSS ํ์ผ์์ `eager` ๊ท์น์ ์ฌ์ฉํ๋ ํจ๊ณผ๋ฅผ ํ
์คํธํ๊ณ ๋ถ์ํ์ญ์์ค.
Q: `eager` ๊ท์น์ SEO์ ์ด๋ค ์ํฅ์ ๋ฏธ์นฉ๋๊น?
A: ์ง์ ์ ์ธ ์์ ์์๋ ์๋์ง๋ง ์น์ฌ์ดํธ ๋ก๋ฉ ์๋(์ด๋ฅผ ํตํด `eager` ๊ท์น์ด ๋์์ด ๋ ์ ์์)๋ฅผ ๊ฐ์ ํ๋ฉด ๊ฒ์ ์์ง ์์๋ฅผ ๋์ด๋ ๋ฐ ๊ธฐ์ฌํ ์ ์์ต๋๋ค. ๋ก๋ฉ ์๋๊ฐ ๋ ๋น ๋ฅธ ์น์ฌ์ดํธ๋ ์ผ๋ฐ์ ์ผ๋ก ์ดํ๋ฅ ์ด ๋ฎ๊ณ ์ฌ์ฉ์ ์ฐธ์ฌ๋๊ฐ ๋์ผ๋ฉฐ, ์ด๋ ๊ฐ์ ์ ์ผ๋ก SEO ์ฑ๋ฅ์ ์ํฅ์ ๋ฏธ์น ์ ์์ต๋๋ค.
Q: `eager` ๊ท์น์ ๋ํ ๋ช ๊ฐ์ง ๋์์ ๋ฌด์์ด๋ฉฐ ์ธ์ ์ฌ์ฉํ ์ ์์ต๋๊น?
A: ๋์์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์ค์ CSS: HTML ๋ฌธ์์ ์ง์ ์ค์ํ CSS(์ด๊ธฐ ๋ ๋๋ง์ ํ์ํ ์คํ์ผ)๋ฅผ ์ธ๋ผ์ธํฉ๋๋ค.
- CSS ์ธ๋ผ์ธ: HTML์ `<head>` ๋ด์ ์๊ณ ์ค์ํ CSS ๋ธ๋ก์ ํฌํจํฉ๋๋ค.
Q: ์น ์ฑ๋ฅ ์ต์ ํ์ ๋ํด ์์ธํ ์์๋ณด๋ ค๋ฉด ์ด๋์์ ๋ฐฐ์ธ ์ ์์ต๋๊น?
A: ์น ์ฑ๋ฅ ์ต์ ํ์ ๋ํด ์์ธํ ์์๋ณผ ์ ์๋ ์๋ง์ ๋ฆฌ์์ค๊ฐ ์์ต๋๋ค. ์ ์ฉํ ์์ค์๋ Google์ web.dev, MDN Web Docs ๋ฐ Coursera ๋ฐ Udemy์ ๊ฐ์ ํ๋ซํผ์ ์จ๋ผ์ธ ๊ณผ์ ์ด ์์ต๋๋ค. ๋ํ ์ฌ์ฉํ๊ณ ์๋ ํน์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ ํ๋ ์์ํฌ์ ๋ํ ์ค๋ช
์๋ฅผ ์ฐธ์กฐํ์ญ์์ค.